Changelog
v1.5.18
Set seed via tensor backend allowing to also set seeed of backend (for now if available).
v.1.5.17
Bugfix: enforce normalization of a random TTN due to accumulated floating point errors (especially for single precision, normalization was given up to four digits, but a second call gets it to around seven digits. Also be aware of accumulating errors in single-precision simulations for large bond dimensions).
v1.5.16
Bugfix unittest tto.from_lptn.
v1.5.15
Bugfix checkpoints could not restart when running with GPUs.
Bugfix convert function not converting all the attributes when doing the conversion.
v1.5.14
Bugfix: correct the expected norm in test_set_subtensor_entry and check absolute difference.
v1.5.13
Bugfix: enforcing the local_dims to be a python list.
Replaced np.repeat() with python lists for local_dims in many places.
v1.5.12
bugfix: changed the method for randomizing the initial state for excited state search.
v1.5.11
Allowing meas_unbiased_probability and probability observable to work with different precision.
Bugfix in probability observable.
v1.5.10
Fixing import checks to be compatible with cluster environments that have cupy but are running without GPU.
v1.5.9
Switch to new build server.
Update references with new zenodo packages.
v1.5.8
Prepare public version with python3.11.
Changes up to 1.5.0 - 1.5.7 can break backwards compatability.
Bugfix probability measurements with torch (or non-numpy backend).
Improve unittests MPI and tensors, e.g., protect with timeout.
v1.5.7
Fixed a bug in probability observable.
Imaginary time evolution with real dtype improved and generalized to be compatible with torch tensors.
v1.5.6
More general MLDataMPO.from_matrix and _ml_predict_label_link_via_mpo
v1.5.5
Memory-friendly measurement of two-point correlators; user can specify batch size in the observable as optional argument (breaks backwards compatibility of to_itpo which is now an iterator).
v1.5.4
In QuantumGreenTeaSimulation, the default tn_type is now 6 (MPS), and the tensor_backend is 2 (non-symmetric simulation).
Fixing errors in several unittests.
Fixing failing documentation autoclasses.
Fixing probability type in MPS apply_projective_operator.
Patching tensordot` by automatic (warned) switching to left-tensor device.
meas_local now converts numpy/cupy observable operators to backend tensors.
v1.5.3
Fixed a bug where the cpu+gpu mode failed for systems with masked tensors (when size is not power of two) because tensors were moved incorrectly.
Added the get_unmasked_positions method for the TTN.
v1.5.2
Bugfixes probability observable, especially confusing default values.
Probability observable with “U” returns count now as well.
Detect complex numbers with imaginary part equal to zero in QteaTensors multiplication (allowing in-place updates).
v1.5.1
Update official version for build server to python3.11 via new dockerfile.
Introduce unittests for MPI checking tensor’s methods; improve MPI tooling.
Improve abstract checks for tensor classes.
v1.5.0
Version bump on minor (no changes).
v1.4.38
Implemented sorting of the overlaps with native Python functions, because pytorch’s argsort() does not support lists.
Bugfix normalization of the projected tensors.
v1.4.37
Bugfix for unnormalized state after space-link expansion and truncation.
v1.4.36
Prepare public version (just version bump and merge conflicts).
v1.4.35
Method product_state_from_local_states_2d() for the TTO class.
v1.4.34
Mixed device update, new mixed device notation is cpu+gpu.
GPU switch decorator to allow choosing GPU via index, e.g., gpu:1. As mixed device cpu+gpu:0 is allowed.
Small fixes: small fixes in conversion data types, devices to be consistent.
Remove in tensor get_sqrt_func and get_argsort_func which can be replaced with get_attr.
v1.4.33
Fixed a bug where local measurements would not update when loading a pickled state. Pickling now removes the cache of local density matrices.
v1.4.32
Reorder some unittest to match submodule structure of qtealeaves.
Update bibtex collection for Quantum TEA.
v1.4.31
Minor refactor & typo in convergence parameters.
v1.4.30
Introduce new tensor network machine learning modes, e.g., using backpropagation.
Quantum mutual information and reduced two-site density matrices for TTN.
Temporary folders for more unittests
Decall method for unittest class goes into tooling.
Bugfixes mixed device, reading files, extension attribute of TN.
v1.4.29
New oqs_mode=3 for open system dynamics with density operators (TTO)
New AbstractTN method apply_local_kraus_channel and its implementation for the TTO class
Observable meas_bond_entropy now available for the TTO class
New method get_local_kraus_operators in the ITPO class, which constructs Kraus operators from input (local) Lindblad operators
New method eig, which return eigenvalues and eigenvectors of a two-leg tensor
New method expm, which returns the exponential of a tensor
Generalized method diag such that it allows to pass a vector
v1.4.28
Bugfix for local measurements for the mixed device (cgpu) mode.
Bugfixes for ttn_projectors for the mixed device mode.
v1.4.27
Bugfix LPTN read() method was not reading pickled states
Bugfix in TTO._probabilities to make compatible with qredtea backends
Enabled static_method in TNConvergenceParametersFiniteT to be a list of different imaginary time evolution methods.
v1.4.26
Update convergence parameters for python, restructure order and docstring.
v1.4.25
Implemented a randomize method for all tensor networks.
v1.4.23
Implemented from_x feature to construct a desired tn from another tn ansatz.
v1.4.22
Special handling of linter settings removed.
v1.4.21
Bugfix for pytest test discovery
v1.4.20
Fixing TTO initialization argument to interface correctly with matcha.
v1.4.19
License copyright update and year update.
v1.4.18
Bugfix convert cached local density matrices.
v1.4.17
Added AbstractTN function get_substate and its implementation for MPS.
Added kron as the abstract method of _AbstractTN, implementation was present
for MPS and _AbstractMatrixTN, now implemented as well for TTN. * Bugfix MPS random initialization was not imposing dummy link on last site.
v1.4.16
Bugfix generation example tensor with symmetries (added argument to generate base tensor class).
Enforce normalization during measurements; catch missing normalization in one imaginary time evolution mode.
v1.4.15
Bugfix for SPO when running with backend different than numpy
Bugfix OPES, improved error handling for OPES.
v1.4.14
Second round of streams enabling them iTPO loops. Few use-cases with benefit according to benchmark.
v1.4.13
Tensor network machine learning: enable label-link, decomposition-free iso-shift only for TN-ML.
Implement RQ (default is QR with permutation, but tensors can overwrite now for performance, scipy’s RQ does not seem to work).
v1.4.12
Bugfix for operator sets (Lindblad term)
Product state from local states allows different local dimension enabling list of vectors.
Bugfix attribute check in quantum model.
v1.4.11
Added get_eigenstates method to the TTO class. It extracts a number of selected eigenstates in the TTN format and the respective probabilities from a given TTO.
v1.4.10
Autoselection of disentangler positions now only takes positions which lay fully on any MPO term of Hamiltonian.
Bugfix in aTTN checkpoints: the disentanglers were optimized in every sweep even if there was checkpoint to be loaded after.
v1.4.9
Enable complex time evolution with dt having real and imaginary part.
v1.4.8
Fixed a bug that wrote the string and the json version of the overlaps between excited states into the same file.
Overlaps are only written in json format.
1.4.7
Implemented an abstract stream method to generalize streams for all backends (streams can be enabled for cupy/GPU by the user, but are not enabled by default).
v1.4.6
Implemented the TTNProjector class, which allows iterative calculation of excited states. Set ‘num_excited_states’ = x in your params dictionary for x + 1 iterations (ground state and x excited).
Added a new TTN method sum_approximate. It takes a list of TTNs and a list of amplitudes, and efficiently calculates an optimal TTN representation of their sum.
Fixed a bug in the distance2pure measurement. Now supports pickled states, and MPS.
v1.4.5
Work on from_local_states to make it consistent across all ansätze.
v1.4.4
Bugfix tensor-backend-related function sqrt in mps_simulator.py was used on numpy array.
v1.4.3
Added a tensor-network based QUBO solver in the new submodule
qtealeaves`.optimization
. The solver takes a QUBO problem in a common format and returns the solution via qtealeaves tensor network methods. Propagated this new submodule through the infrastructure, including unittest and example on a small set of small-size integer random instances.
v1.4.2
Fixed convergence issue with arpack: if the conditions are not met with arnoldi_min_tolerance, the arnoldi_max_tolerance is used. If even this tolerance is too big, the optimization of the tensor is carried out by qtealeaves solver.
Added MPS.product_state_from_local_states as in TTN.
v1.4.1
Update tooling to pylint==3.2.4 and black=24.4.2.
Custom error class QTeaError and QTeaLeavesError allowing to tailor try-except statements to quantum tea.
v1.4.0
Introduces major diff with minimal changes (import paths) to the code logic.
Version bump minor to 1.4.0 as not compatible with 1.3.x in qmatchatea due to imports.
Include isort as a git (pre-commit) hook.
Resolves circular imports in library code by using full import paths.
Full import paths are now required when importing names with a leading underscore, in both library and user code.
v1.3.17
added the test_check_completeness() to the test_examples.py file, to check that are the examples in the Examples folder are properly unittested
v1.3.16
Bugfix
assert_int_values
had inplace update (discovered when generating mapping for irreps and original Hilbert space, not clear where the inplace update happens).
v1.3.15
renamed the DELayer() methods extend() and append() as they were overwriting the pickle() layers and messing up unpickling.
moved the get_default_datamover() to base_tensor_class
solved the sum() bugfix appearing when using aTTNs with non-numpy symmetric tensors
v1.3.14
Move observables unittests into qtealeaves as abstract class
Bugfixes to make all backends pass the observables unittests
v1.3.13
Added singlet fission 1d model as one of the pre-defined default models
Added singlet fission 1d example
v1.3.12
Bugfix integer padding for product states.
Added get_default_datamover() method for tensor classes.
v1.3.11
Einsum optimization level as static function
stack first and last link as abstract method
Bugfix MPS addition not passing tensor backend
v1.3.10
Bugfix logger not writing the output if simulation was starting from checkpoint - this was due to logger setup being outside the checkpoint if-case in simulation_setup.py.
Bugfix simulation not removing old checkpoints, so if simulation had more than one checkpoint it would always start from the oldest one, i.e. the one from the lowest sweep. Fixed by enforcing the removing.
v1.3.9
ML MPS with effective operators and einsum, threading mostly removed, initial guess.
ML TTO is enabled.
Tensor class coming with new methods, e.g., einsum
Small fixes in initialization (TTO, vacuum vs ground keyword).
v1.3.8
Examples are now tested;
Negative probabilities from unbiased_probabilities set to zero with a warning on the precision.
v1.3.7
Fixed bug in add_identity method of DenseMPO that made the symmetric aTTNs fail.
Bugfix aTTN: typo integer key, property bond dimension cannot resolve parameterization.
Bugifx: get site tensor in the MPI-MPS uses mapping now.
Bugfix for local symmetries / to-dense: new keyword for global sector is “global”; to_dense needs to adapt tensor class for tensor backend.
v1.3.6
Adapted ordering convention for input disentangler positions to Python-side logic
Enabled disentangler position autoselection for Python aTTNs, autoselection now favours disentanglers that lay on interaction terms
aTTN can now measure local observables
Bugfix new LPTN to TTO conversion setup tensor_backend default argument, setting the conv_k0 in lptn_to_tto_move_tensors.
v1.3.5
Import bugfixes from master branch and version v1.2.30
v1.3.4
Enable and test finite-T imaginary time evolution for LPTNs
Change how truncated norm is tracked (all decompositions)
New conversion for LPTN to TTO combined all in from_lptn now. Returns norm considering losses always, now.
Enable two-tensor update for imaginary time evolution
Tensors can be initialized with “1” meaning identity (rank-2 square matrix only).
Convert _AbstractMatrixTN with symmetries into matrix (rank-3 tensor)
Bugfix mismatch links due to invalid fast return in DenseMPO.
Update how we call measurements due to finite temperature (run_tn_measurement needs a function to be passed).
iso_center is None | int | tuple; list no longer accepted due to comparisons. Use self.iso_center or comply to None | int | tuple.
v1.3.3
Enabled groundstate search for symmetric MPS
Enforced the canonization in MPS bond entropy measurement to ensure that the singular values are updated
Merge bugfixes up to v1.2.19 into here
v1.3.2
Implemented aTTNs ground state search.
v1.3.1
Added Raise ValueError when from_state_vector() has a zero vector
v1.3.0
Version bump for new develop.
v.1.2.30
v1.2.32
Exception for bug discovered with iTPO and symmetric tensors in ground state search. (Ticket is open)
v1.2.31
Bugfix in LPTN.write() function, disabled overwriting initialized iso_center in case input iso_center is None.
Fix sphinx reference to abstract tensor networks.
Update bibtex.
v1.2.30
Iteration for fixing integration tests in qgreentea.
Bugfix multiple custom correlation measurements.
Bugfix DenseMPO: reordering strategy when sorting sites.
No use of cached singular values for measurements.
Update in abstract tensors and tensors: __matmul__, restrict_irreps, split_link_deg_charge
TNOperators can be used with pickle, which was prevented by default mapping function.
Wrapper for logger.warning to avoid repetition of warnings.
Bugfix truncation LPTN to TTO.
v1.2.29
Provide __contains__ for TNOperators.
Bugfix parsing SVD control and tuning setting.
Avoid conversion warning for complex to real singular values.
Lindblad via quantum trajectories with weak symmetries for TTN
Bugfix Krylov (non-hermitian) solver
Small fixes (MPS raising error if not initialized, norm via singular values, time-dependent coupling Lindblad)
New method is_identical_irrep
v1.2.28
Bugfix orthogonalization eigensolver for complex vectors.
v1.2.27
Bugfix time evolution with measurement period.
v1.2.26
Bugfix eigensolver not actually resolving abs with self.abs in v1.2.25
Bugfix None.__ne__ not available in python3.12
v1.2.25
Bugfix abs is no attribute for numpy.
v1.2.24
Bugfix in measuring entanglement entropy; taking into account that TTN uppermost layer has only one link and enabled measurement with symmetric tensors.
v1.2.23
Integrate commits from master v1.1.12
v1.2.22
DenseMPO and LPTN now inherits both from the new _AbstractMatrixTN class, since they shared multiple routines
Implemented __add__ method for _AbstractMatrixTN that enables sum of MPOs;
Implemented application of one/two/multi sites operators to an _AbstractMatrixTN, which can be applied from the top or from the bottom;
Implemented multiplication between two MPS mps_multiply_mps (the bond dimension fo the product is the product of the bond dimensions)
Implemented optimize_two_tensors in the _AbstractTN class
Added maxiter parameter in the greedy probability measurements for MPS to avoid an infinite loop
Fixed bug in SVD arising in very specific cases;
v1.2.21
Bugfix einsum (cupy has no out argument), normalization enforced, eigensolver assignment
Property linear algebra library
v1.2.20
Enabled custom correlation measurements for qtealeaves.
Bugfix in ITPOSites function add_dense_mpo_list for initializing the tensor backend based on the first non-empty term instead of just the first term.
v1.2.19
Fix calls to numpy.product with numpy.prod to prepare for numpy v2.0.0
v1.2.18
Bugfix random SVD (data type, dimensions)
Potential bugfix in optimize with link expansion on quick return
Introduce concatenate_vectors as common interface for all backend libraries.
v1.2.17
Enable coupling of individual terms in SumOfLocal Lindblad.
v1.2.16
Bugfix in initializing the MPS with a general tensor backend instead of only the numpy one.
Bugfix for initializing TTN and TTO from a product state with general tensor backend.
Implemented the pad method using the expand_tensor method. Padding is only possible at the end of the tensor.
Implemented kron function for AbstractQTeaTensor and QTeaTensor.
Implemented ctrl=scalar initialization for QTeaTensor, where the tensor is filled with that scalar value. This initialization now overlaps with ctrl=”O” and ctrl=”Z”.
v1.2.15
Incorporated python’s built-in logging functionality, removed internal logging setup code.
Deprecated verbosity option in QuantumGreenTeaSimulation.
Moved simultion-related modules to new namespace .simulation (helps filtering logs).
Added example on logging configuration (optional, works out of the box).
Track and propagate up Krylov convergence during time evolution.
Improved some log and exception messages, removed print statements.
v1.2.14
Bugfix: attribute sum is not available for all tensorbackends and their singular values, e.g., tensorflow.
Convert norm-error in eigensolver into warning.
v1.2.13
Broadcasting TTN states via MPI and parallel sampling via MPI.
v1.2.12
Introduced the LocalKrausTerm, which maps a Kraus map to a set of Lindblad operators with a first-order approximation.Notice that the timestep with which you define your Kraus operator should be comparable to the timestep of the simulation. When passing the Kraus operators, the first operator should be the closest to the identity. The Kraus operator can be numerically unstable when the timestep is too small, i.e. when the resulting lindblad have entries >1
v1.2.11
Merge bugfixes in master (v1.1.11) into develop branch.
v1.2.10
Enabled time-evolution (`tevo_mode`=1-4) for TTOs (`tn_type`=8)
Added product_state_from_local_states for TTOs
Added ttn_to_tto, a function that converts a given TTN to a TTO (projector)
Added to_ttn, a function that converts a given TTO (projector) to a TTN
Added to_statevector for TTOs
Bugfix in compute_energy and leg_towards, where in both cases the input given to move_pos (which expects a tuple) could result in errors
Bugfix in ttn_simulator.build_effective_operators; removed the exception if the iso_center is not the default iso_center. This could result in the termination of the simulation (time-evolution), if only local measurements are performed. Now the iso_center is installed at the default position in this case. The function was further slightly changed such that correlation measurements also work on TTOs.
v1.2.9
Bugfixes for statics and mixed device (mostly passing cgpu as actual device).
v1.2.8
Enable skipping RG tensors which are tensors without truncation and therefore representing only a unitary transformation. Idea from renormalization group (RG).
v1.2.7
Fix inconsistencies discovered when running qgreentea integration tests
Fix problems with symmetric links.
Fix problems with conversion into symmetric tensors for operator sets.
Fix problem with bond entropy measurement (qgreentea-fortran measures top link of TTN and all lowest layers by default).
Eigensolver cannot rely on real attribute (for future tensorflow backend).
v1.2.6
add SumLindbladTerm to enable the term to be a sum of local Lindblad
operators.
iTPO logic can also support other non-local Lindblads now.
v1.2.5
Allow to overrule bond dimension to reach “good” settings for hardware. Default setting does not change behavior in comparison to < v1.2.5.
v1.2.4
Bugfix typo in test for convergence parameters at finite temperature.
v1.2.3
Enable different Hilbert spaces via operator sets, e.g., a mixture of qubits and qudits.
v1.2.2
TTN for systems with a non-power-of-two number of degrees of freedom via trivial legs.
v1.2.1
Require tensor backend for python to be passed from the outside.
Tensor backend allows injection of properties of the symmetry.
Changes to abstract tensor in preparation for alternative to numpy/cupy.
Start using einsum notation for certain contractions, e.g., scale link.
Version bump minor to v1.2.x anticipating merge of master and increase to v1.1.x for master.
v1.0.21
ITPO and SparseMPO have now an __iter__ method, that iterates through all the tensors
TensorBackend now supports mixed device for simulation, having two additional properties: self.computational_device and self.memory_device. These two devices are the same if we select a single device, i.e. device in (“cpu”, “gpu”), but differs for mixed devices. For example, is device=”cgpu”, then self.computational_device=”gpu” and self.memory_device=”cpu”.
Implemented mixed device for simulation. Now it is possible to keep all the tensors but the one we are updating on one device (cpu), and the other on the accelerating device (gpu). The movement is mostly done on the level of the iso_towards() method, since in this way we are able to overlap computations and communications. The mixed device is tested for MPS and TTN. The method that is actually doing the movement is move_pos, which converts the tensor and the effective operators insisting on that tensor.
Implemented correct convergence stats
v1.1.12
Fix build of documentation (importlib, path, code-blocks, missing chapters)
v1.1.11
Bugfix checkpoints: optimize did not return state, so loading did not have an effect.
v1.1.10
Bugfix energy not json serializable (float32).
Customizable json encoder via tooling, where common unsupported cases can be added.
Remove print statement.
v1.1.9
Bugfix of convergence parameters that could not be parameterized.
v1.1.8
Bugfix on the ml_get_gradient_tensor method. Adding missing multiplication of the gradient by the label.
v1.1.7
Bugfix on the QteaTensor._eigvl_svd method. Now matrices that are smaller than a 3x3 are treated by the dense solver even if “X” is the chosen method for stability of the arpack methods
v1.1.6
Bugfix enabling MPS loading pkl files, iso center check with None.
Bugfix data type vector_with_zeros_like
Bugfix conv_params not required for SVD via SVD control.
Bugfix TTN evolution with chi=1 (throws warning, we can set minimal chi).
Bugfix TDVP imag time evo with space-link expansion: less aggressive expansion strategy to avoid issue with decompositions.
Avoid warning for inconsistency with two or more quenches (retrieving ground state parameters for couplings not present in quench).
v1.1.5
Added the missing autodoc statements.
v1.1.4
Bugfix for MPS initialization of singular values when starting from the |00…0> state;
Changed np.product in np.prod because of numpy deprecations;
v1.1.3
Bugfix loading states and for imaginary TDVP missing solver.
v1.1.2
Bugfix for combined operators and unittest to check their use in a simulation.
v1.1.1
Update master branch to version v1.1.1 which includes the new major version v1.x.x
Changes contain everything up to version 1.0.20
v1.0.20
Bugfix setting auto-disentangler
Bugfix nml file for convergence parameters and fortran; skipping python-only entries now.
Bugfix iso-center set as well to (0, 0) for empty TTN.
v1.0.19
Implement checkpoints for statics after each sweep, intrasweep, and for dynamics after each time step.
New restriction on delete_existing_folder and store_checkpoints; they cannot both be True as checkpoints can never be used with this combination.
New function for QuantumGreenTeaSimulation returning status of simulations.
Generation of hash for simulations leading to the fact that unhashable objects have to be excluded.
Update all examples and make them working with qtealeaves (no code fragments for symmetries, fortran code)
Warning that fortran quenches is not consistent with time-dependent quenches in python for two and more quenches.
v1.0.18
Bugfix for require_singvals still present in run_tn_simulation
Bugfix in contraction 43 in ITPO
Bugfix for MPS random initialization, there was an hardcoded local dimenison 2
Bugfix for QteaTensor.read, the device was not passed giving rise to an error
Several bugfixes for machine learning MPS
Bugfix for multiplication with a QteaTensor: __mul__ was implemented, but not __rmul__, and so tens*a worked, but a*tens did not. Added __rmul__ in the abstract tensor class.
Added __add__ and __iadd__ methods for QteaTensor and the abstract class. Elementwise addition.
v1.0.17
Introduced the ATTN and DELayer class
Implemented aTTN correlation measurements
Initial state in continue_file can now be passed directly from python instead of as a file
Bugfix in TTN.from_state_vector()
Allowed to enforce SVD to have singular values on each available link of the tensor network
Implemented applying a two-site gate on a state vector.
v1.0.16
Implemented exact diagonalization with the Krylov solver. This method avoids creating the full Hamiltonian matrix.
Added apply_ham_to_state method to QuantumModel, which computes H|psi>.
Changed the default time_evolve_modes for exact diagonalisation: 10 is with matrix construction, 11 with Krylov. 0 (default) points to 10.
v1.0.15
Added modeling.stringterm1d and tests.modeling.tests_string_term
Bugfix for tests.modeling.tests_block_term
Bugfix for modeling.tensorproductoperator
Same changes as v0.5.13
v1.0.14
Bugfix device None, tensors now enforce device being not None when creating tensor (For converting tensors, it will still be allowed).
Pass device through in TTN initialization.
v0.1.13
Implement quantum trajectories.
v1.0.12
Moved the public attribute QteaTensor.elem to the private QteaTensor._elem. The attribute can still be accessed with the QteaTensor.elem property, but cannot be set.
Added warning if you try to initialize a QteaTensor.from_elem_array using an integer array passing dtype=None. The cases where you want to use integer arithmetic in TNs are very rare (please let me know if you find one).
Implemented apply_mpo method for MPS and TTN that let you apply a general MPO to the state. It can be used to apply n-qubits gates with n>=2. It takes a DenseMPO as input.
Implemented matrix_to_tensorlist method for the _abstractTN, to map a generic matrix to an MPO form.
Implemented a from_matrix method for the DenseMPO
Fixed bug in copy() method of QTeaTensor when using gpu.
Fixed bug in MPS.swap_qubits.
Added in the DevelopersREADME.md how to run only tests affected by your changes using pytest (no need of migrating the unittests).
Moved TNObservables.result_buffer inside the __init__ method;
Changed the TNObsWeightedSum.from_pauli_string into a class_method;
Fixed bug for QteaTensor.read
Fixed bug for converting singular values (someone accidentally deleted the fact that singvals are reals. This messes up with mpi)
v1.0.11
Fixed the leg order in TTO.trunc_probabilities()
v1.0.10
Add missing methods to abstract tensor class.
Read method for tensor class (format F90 compatible), requires now tensor backend.
Modify to_dense method returning dense tensor without symmetry.
Bugfix continue file, bugfix theta tensor contraction, bond entropy measure.
v1.0.9
Pickle TN states for continue file State2File
Enable flex-TDVP time evolution for python as in Fortran
Enable iTPO modes 2 and 4 (updated, compressed and updated)
Bugfixes (MPS Corr not enable, SPO two-tensor update, Corr measurement singular values)
Separate SPO into two classes for F90 and PY.
Start testing models.
v1.0.8
Implemented single-site link expansion imaginary time evolution.
Improved docs of TTN;
Fixed bug for MPI communications due to the wrong type of singular values;
Fixed bug in the eigenvalue decomposition for SVDs;
Fixed the MPIMPS class for MPI simulations in qmatchatea.
v1.0.7
Typos in TNConvergenceParameters docstring.
v1.0.6
Bugfix weighted sum measurement via iTPO for MPS and TTN.
v1.0.5
Enable log file in python simulator
Bugfix parameterization (tn type, mpo mode, disentangler, …)
Bugfix SPO matrices (building them, trace)
Bugfix TTN parent tensors
Add comments convergence parameters for python-only variables.
v1.0.4
Implemented single-site imaginary time evolution.
Implemented eigenvalue decomposition svd (“E”), sparse eigenvalue decomposition svd (“X”), random svd (“R”) for QTeaTensor.
Operators for MPS.meas_tensor_prod should now be general rank-4 operators, i.e. general MPO. For the old tensor product just use bond dimension 1 MPOs. TTN.meas_tensor_prod accept rank-4 operators, but only for bond dimension 1.
Added qiskit_convention optional argument in TNObsProjective, TNObsProbability that is used only in python to avoid an hardcoded ordering.
Added a to_itpo method to TNObsCorrelation and TNObsWeightedSum to have a more readable run_measurement function.
Implemented ITPO measurement for weighted sum. Works only for two-bodies interactions at the moment.
Added tests for observables computed in run_measurement
v1.0.3
Small changes suggested in v1.0.2 code review.
Fix qtealeaves solvers, now using norm_sqrt (equivalent to Fortran code where norm was what norm_sqrt is now).
ATTNSimulation to QuantumGreenTeaSimulation (deprecated warning for ATTNSimulation).
Enable half-precision real (via single in LinAlg), enable switching precisions.
Time evolution methods tested up to constant local terms (no interaction, no time-dependency).
Compression for iTPO
TPO via iTPO, other TPO as mpo_mode=21 still available for debugging.
v1.0.2
Bugfix for the symmetry sector being initialized as maximum bond dimenison instead of 1
Added stop on python statics based on convergence_parameters.abs_deviation and convergence_parameters.rel_deviation
Added possible stop only after convergence_parameters.n_points_conv_check sweeps
Added selection of device and data type through the convergence parameters in python
Added the convergence_parameters.ini_bond_dimension in python, such that you can initialize a random tensor network (either TTN or MPS) at a bond dimension that is smaller than the maximum bond dimension of the simulation
v1.0.1
Implemented Ground state search for the MPS ansatz
Effective operators are now carried over in the MPS if present
The MPS is now a backend in the ATTNSimulation for tn_type=6
The ttn_simulation and ttn_measurement functions have been Removed
Added a new file emulator/tn_simulation that takes care of a general python simulation independently from the TN ansatz
Added the physical_links method to TTN and MPS for interoperability with the TensorProductOperators
Added new initialization method for MPS. Now it can be initialized as a random mps at a given bond dimension
timestep is now an _AbstractTN function
Improved docs
TTN and MPS unittests now inherits from the AbstractTN unittests
Fixed the xp checks at any time
v1.0.0
Introduce abstract class for tensors.
python: link expansion, iTPO, SPO, sketch single-tensor time evolution
v0.5.14
Add bibtex files for all articles and theses involving Quantum TEA, its precessors, and the flexmps fork of the library.
v0.5.13
Added modeling.stringterm1d and tests.modeling.tests_string_term
Bugfix for tests.modeling.tests_block_term
Bugfix for modeling.tensorproductoperator
v0.5.12
Include changes from v0.4.48 to v0.4.54 in develop branch
v0.5.11
Catch the ‘file not found’ error when trying to read partial results of time evolution.
v0.5.10
Added check which prevents users from accidentally deleting current or parent folder when running the simulations.
v0.5.9
Added new modeling term BlockTerm2D
v0.5.8
Added methods to read from the hdf5 files for the local and correlation observables.
This enables reading/writing to hdf5 for energy, norm, time and local and correlation observables.
Bugfix for continue file, now allowing parameterization.
v0.5.7
Added the new observable type TNObsCustom which can measure correlations on the customly chosen positions.
v0.5.6
Add write method and to_tensor_list_mps for the LPTN emulator.
Move spinglass operators from Contrib to quantumtealeaves.
Add example for LPTN via MPS.
v0.5.5
Second caching strategy for sampling and TTN.
Bugfix during estimating size of current cache
Bugfix writing data type of finite-temperature convergence parameters (now considering data type)
v0.5.4
Fixed online generation of the documentation by installing the mpmath and joblib libraries on the gitlab server
v0.5.3
Bugfix for unbiased (OPES) sampling with low precision (numpy). In particular, the np.isclose function was impaired by the relative tolerance, now set to 0.
v0.5.2
Implemented measurement of magic for MPS emulator
The OPES (unbiased) sampling now uses numpy if a low enough precision is asked, being numpy much faster than mpmath.
ATTNSimulation can now use the python backend for TTN ground state searches with single-site update and no symmetry.
v0.5.1
Implemented machine learning MPS, computing the gradient of the tensors as in this work: https://arxiv.org/pdf/1605.05775.pdf
The MPS.dot method can now contract only subsections of the MPS
v0.5.0
New develop version
v0.4.54
requirements as a static list in setup.py.
v0.4.53
Fix requirements in package setup.
v0.4.52
Update descriptions for PyPi package delivery.
v0.4.51
Setup PyPi deployment to testpypi for master branch, i.e., the conan channel stable.
v0.4.50
Update exporting of conan packages
Small updates docs
v0.4.49
Bugfix for docs not showing
v0.4.48
Update to stable master branch
Solved bug in get_rho_i for the MPS class
v0.4.47
The singular values are updated when the isometry is moved through SVD
Added plotting option for the TTN for visualizng, for example, the entanglement.
v0.4.46
Implemented data_type as new simulation parameter to pass the options for data precision C/D/S/Z.
v0.4.45
Bugfix conversion LPTN to TTO, i.e., number of layers, QR on top layer, factor 100.
v0.4.44
Bugfix for occasionally missing left/right operator in 1d system with symmetries.
Bugfixes sampling TTN.
Add automatic cleaning of TTN cache during sampling.
v0.4.43
Enable parameterization of tn_type, e.g., TTN vs MPS in one simulation.
v0.4.42
Add combined operators.
v0.4.41
Enable sparse MPO for local terms and 1d nearest-neighbor terms.
v0.4.40
Enable caching strategy for sampling from TTN for superiterations (in the unbiased sampling).
Fix unittest with random results testing fortran interface writing operators.
v0.4.39
Construction of Hamiltonian as a sparse matrix for ED.
Exectuable of quantum green tea can be specified.
Fix some additional linter checks raised by difference in function call.
Fix unittest with mpi4py present, but not running with MPI.
v0.4.38
Add mpi send/recv tensor function in _AbstractTN
Add support for MPI simulations with the MPS backend with the MPIMPS simulator
v0.4.37
Added masks in the PlaquetteTerm2D.
Moved PlaquetteTerm to qtealeaves.modeling and renamed to PlaquetteTerm2D.
v0.4.36
Negativity of TTO density matrix can now be computed via the eigenvalues of partially transposed density matrix.
Upgraded the error message in aTTN disentangler position check.
v0.4.35
Add support for data parallel MPI simulations in quantum green tea.
Parse CPU time from log file if available.
v0.4.34
Bugfix for the padding introduced in 0.4.33. It is now possible to pass a None value without an error.
v0.4.33
The TTN function for generating product TTN state from local states can now pad the TTN tensors with zeros.
v0.4.32
Added the option for automatic disentangler position selection for aTTN simulations.
v0.4.31
Enabled setting the initial state with continue_file for exact diagonalization methods.
v0.4.30
Enabled cupy for TTO/TTNs: now you can run them on GPU.
Enable singular values cut track in TTNs.
Added trnc_tracking_mode in TNConvergenceParameters for handling the ttn cut singvals in python
renamed to_tensorlist to to_mps_tensorlist since it was misleading, you could not call TTN.from_tensorlist(ttn.to_tensorlist()) to obtain the same TTN. Now the function TTN().to_tensorlist() returns the input of from_tensorlist()
bugfix in TTN().apply_two_sites_operator()
Removed automatic swap in MPS().apply_two_sites_operator()
v0.4.29
Added check for disentangler position which prevents the fortran error when working with Plaquette terms.
v0.4.28
Removed print statements from Hilbert curvature unittest.
v0.4.27
Automatic generation of simulation for quantum trajectories.
Add subfolders for input and output of quantum trajectories run.
Add quantum trajectory_id and seed.
Read and average observables for quantum trajectories.
v0.4.26
Provide 3d quantum Ising model as one of the default models
Extend HilbertCurve with function to backmap observables.
Allow passing new variables now available in the input reader.
v0.4.25
Modified leg order for the TTO, now it follows leg order of TTN
TTO now inherits from TTN, so all the functions are freely available
TTN is more flexible now, does not always have two tensors on top
Added get_rho_i method to MPS
Moved meas_local to the _AbstractTN
v0.4.24
Implemented shifting of a selected link through the TTN.
Implemented applying the 2-site operators to TTN.
Implemented swapping of two sites in TTN.
Added the possibility to truncate the singular values throughout the isometry shifting procedure.
v0.4.23
Improve description bond entropy to distinguish between MPS and TTN implementation.
v0.4.22
Implemented measurement of local operators for TTNs
Implemented measurement of tensor product operators for TTNs
Implemented measurement of weighted sum operators for TTNs
Implemented measurement of bond entropy for TTNs
Added singvals attribute to TTNLayer to keep track of the singular values on each link of the TTN
Modified the ouput of meas_entanglement in the mps simulator such that it is the same of the ttn emulator, i.e. a dict where the key is the bipartition and the value is the Von Neumann entanglement.
Added checks for observables in _AbstractTN
Added automatic removal of singvals in qr_towards_top method of TTNLayer
Added optional removal of singvals in iso_towards
Implemented possible None values in the singvals also for the MPS
v0.4.21
Fixed broken 3D masked terms.
v0.4.20
Added new checks for the choice of disentangler positions.
v0.4.19
Added missing documentation to lptn_to_tto_iso function in TTO simulator.
v0.4.18
Implemented unbiased sampling at arbitrary precision through the mpmath library.
v0.4.17
Allow to set seed from the python side, e.g., for quantum trajectories.
v0.4.16
Documented TTN time evolution workflow in ATTNSimulation.run function.
v0.4.15
Fixed typo in README file.
v0.4.14
Implemented constructing a separable state TTN given the local states of each of the sites for 1d and 2d grid. The 2d case is handled by mapping the particle positions from 2d to 1d.
v0.4.13
Added new class of operators: effective operators
Added rules to update the effective operators along a TNN when the isometry is moved.
Added local optimization of tensor in the TTN
Added neighbors, sites, op_neighbors attributes to TTNLayer mimicking fortran
Ground state searches are now possible for hamiltonians that are tensor product operators
The TTN class is going towards supporting a general TTN, not only a binary one, even though at the moment the only topology still supported is the binary
The TTN is now not initialized empty but with a random isometry
v0.4.12
Added the missing import of
timecorrelator
observable to the corresponding __init__.py file.
v0.4.11
Fixed bug in the from_pauli method of WeightedSumOperators.
v0.4.10
Added a new method for the expansion of the bond dimension of a link through a QR decomposition following https://arxiv.org/pdf/2212.09782.pdf in the AbstractTN class.
Moved the truncation of the singular values in its own method instead of being inside the tSVD function
Added new possible truncation scheme using the norm truncated in the singular values
Added new parameters to control the singular values cut in TNConvergenceParameters
Modified the diagonal matrix multiplication with broadcast in tSVD
v0.4.9
Bugfix in computing the isometrization path in TTN simulator
v0.4.8
Update reading and writing of TTN for updated TTN attributes on the fortran side, e.g., op_neighbors.
v0.4.7
Bugfix shifting isometry center in TTN emulator.
Convert isometry center from F90 file to python indices
v0.4.6
Allow trivial mapping for 1d case and zigzag.
v0.4.5
Generate symmetric operators for fortran which can be contracted over the columns. Backwards compatibility broken for python-fortran interface.
Bugfix writing symmetric tensors of a zero-matrix. Add unit test for spin 1/2 operators and bosonic operators.
v0.4.4
Start mirroring stable, i.e., master to public repository.
Change link to documentation.
v0.4.3
Documentation for new State2File measurement option saving TN without symmetries
Remove superfluous print
v0.4.2
Breaks backwards compatibility
Remove input version v1 and v2
Remove other deprecated input, e.g.,
bc
for boundary condition which is nowhas_obc
.Remove integration test out of this repository.
v0.4.1
Introduces major diff without changing code logic
Include pre-commit in requirements.
Include black as a git (pre-commit) hook.
v0.4.0
Breaks backwards compatibility
Rename package in qtealeaves.
We suggest import qtealeaves as import qtealeaves as qtl
v0.3.39
Allow custom maps derived from Hilbert curvature.
v0.3.38
Replace Hilbert curve encoded only for selected cubes by function generating Hilbert curve on the fly.
v0.3.37
Bugfix when building Hamiltonian (operators defined as functions where not correctly resolved).
v0.3.36
Bugfix writing observables from ED simulations, which requires setting boolean for what observables are measured.
Bugfix in vector of system sizes.
v0.3.35
Fixed the bug for importing models and operators.
v0.3.34
Bugfix for linear combinations of MPSs states. Before, the shape of the tensor used was always the same. Now, it uses left and right tensor correctly.
v0.3.33
A finite temperature density matrix can now be computed for a given model.
v0.3.32
Fixed bugs in TTO simulator.
Added isometrized LPTN to TTO conversion.
Added aditional SVD in LPTN to TTO conversion function.
Implemented norm tracking and added the option for changing K_0 in LPTN to TTO conversion.
Added function for truncating the TTO probabilities to TTO simulator.
v0.3.31
Implement periodic boundary conditions for plaquette term classes, methods “get_interactions”. Added keywork argument ‘has_obc’ to init method
v0.3.30
Fixed resolution of system sizes in qed_models. PlaquetteTerm methods are made compatible with system sizes specified as per v0.3.28.
v0.3.29
Introduce new measurement of time correlator to the initial state at t=0. The correlator is measured between two operators A and B as <A(t=0) B(t)>.
Introduce new measurement of four-body correlator of the type <O_1 O_2 O_3 O_4>.
The implementation of new observables depends on the backend; an availability on the python frontend does not indicate that they will be measured on the backend.
v0.3.28
Bugfix for rectangular or cubed systems in the modeling of Hamiltonians. The assumption of equal dimensions was removed. System sizes can be passed as parameter and are resolved correctly.
v0.3.27
Fixed bug for reset operation in MPSs
Added scipy SVD when numpy fails
Added possibility of performing the canonization through SVDs to reduce the bond dimension
v0.3.26
Migrate CI/CD to docker; update linter version.
v0.3.25
Enable projective measurements and unbiased projective measurements to the TTN
v0.3.24
Now user can install and shift the gauge center of the LPTN.
Added function for computing the reduced density matrix from the LPTN for single or neighbour sites.
TTO functions for installing and shifting the gauge center are no longer staticmethods, but methods.
Added the gauge center attribute to TTO.
v0.3.23
Implemented functions for computing the entanglement monotones of a TTO density matrix.
Replaced QR decomposition with SVD in conversion from LPTN to TTO.
Fixed bug of indentation error in read_tensor() function in fortran_interfaces.py.
v0.3.22
Update reading results with version number of results.
Bugfix writing real parameters, which is required for gfortran compiler.
Bugfix missing write of version number when writing observables from python.
Remove integration tests from this repository.
v0.3.21
Solved error in plaquette coordinates, methods “get_interactions” in file “qed_models.py”
v0.3.20
Now qtealeaves can read the latest version of tn_api_input_reader, that also shows the version of the input reader.
v0.3.20
Implemented function for reading LPTN from fortran output file.
v0.3.19
Move convergence parameters into an extra folder; old simulation require to modify the import statements.
Provide convergence parameters for finite-temperature simulations.
v0.3.18
Update links in readme and docs to baltig.
v0.3.17
Solved bug for reading TNObsBondEntropy from fortran
v0.3.16
Implemented tSVD on GPU using cupy library on the AbstractTN class
Implemented fully working MPS simulator on GPU using cupy
v0.3.15
Change conan user for deployment.
v0.3.14
Remove fortran dependencies; move integration tests to different folder. (to be removed later from this repository.)
v0.3.13
Added function for Kronecker product of two LPTNs.
v0.3.12
Solved bug on time_offset for saving time-dependent parameters into a dict.
v0.3.11
Solved bug on 4 Levels qudit operators.
v0.3.10
Fixed bug: before when adding sites to the MPS the gauge center was always always moved one step to the right, even if the site was added after the gauge center. Now it is moved only when the site is added to the left of the gauge center, as expected.
v0.3.9
Update fortran dependency: changes in cmake structure and module names.
Export license files into conan package.
v0.3.8
added class for LPTN, class for TTO and function for converting LPTN to TTO
v0.3.7
Solved bug on add/remove site on mps simulator. The methods previously were not modifying the lists handling the singular values.
v0.3.6
Solved circular input problems
v0.3.5
Enable LPTN as backend for TN simulations. Restrictions are still in place, i.e., no symmetries, only nearest-neighbor interactions in 1d, no dynamics (new git submodule/module in dependency).
Bugfix vector of convergence parameters
v0.3.4
Improved documentation for observables.
Added support for sphinx-gallery and examples are now in the docs.
v0.3.3
Import of operators has to be fixed to use old scripts.
v0.3.2
Introduce function to QuantumModel to extract time-dependent pulses.
v0.3.1
Import of the QuantumModel and model terms has to be fixed to use old scripts.
The RydbergModel has been removed.
The deprecated variable specifying the boundary conditions of the QuantumModel has been converted to an optional argument.
Short-cuts to common models have been introduced, e.g., the quantum Ising model.
v0.3.0
Import of observables has to be fixed to use old scripts.
New observables are available, mainly implemented for quantum circuit MPS.